// 从 pinia 库中导入 defineStore 函数，用于定义状态管理仓库
import { defineStore } from 'pinia'

// 定义待办事项的接口
interface Todo {
  id: number
  title: string
  start: string
  end: string
  content: string
  location: string
  done: boolean
}

// 定义用户状态的接口
interface User {
  name: string
  isLoggedIn: boolean
}

// 定义待办事项的状态管理仓库
export const useTodoStore = defineStore('todo', {
  // 定义仓库的状态
  state: () => ({
    // 待办事项列表
    todos: [
      {
        id: 1,
        title: '参加计算机协会例会',
        start: '2025-06-11 19:00',
        end: '2025-06-11 20:30',
        content: '讨论下一次技术分享会的主题和流程，分配任务。',
        location: '计算机楼3机房',
        done: false
      },
      {
        id: 2,
        title: '组织社团技术交流活动',
        start: '2025-06-14 14:00',
        end: '2025-06-14 16:00',
        content: '邀请学长分享机器学习在图像识别中的应用，准备活动场地和设备。',
        location: '理科楼05阶梯教室',
        done: false
      }
    ] as Todo[],
  }),
  // 定义仓库的 actions 方法
  actions: {
    // 添加待办事项的方法
    addTodo(newTodo: Omit<Todo, 'id'>) {
      this.todos.push({
        id: Date.now(),
        ...newTodo
      })
    },
    // 切换待办事项状态的方法
    toggleTodo(id: number) {
      const todo = this.todos.find(t => t.id === id)
      if (todo) {
        todo.done = !todo.done
      }
    },
    // 删除待办事项的方法
    deleteTodo(id: number) {
      this.todos = this.todos.filter(todo => todo.id !== id)
    },
  }
})